package virtualTabletop;

/**
 * enum over directions
 * 
 * @author bjo013
 * 
 */
public enum Direction
{
	/**
	 * Northwest
	 */
	NW,
	/**
	 * North
	 */
	N,
	/**
	 * Northeast
	 */
	NE,
	/**
	 * West
	 */
	W,
	/**
	 * Center
	 */
	C,
	/**
	 * East
	 */
	E,
	/**
	 * Southwest
	 */
	SW,
	/**
	 * South
	 */
	S,
	/**
	 * Southeast
	 */
	SE;

	/**
	 * Konverterer retning til endring i y-posisjon
	 * 
	 * @param r
	 *            Retning
	 * @return Endring i x-posisjon som tilsvarer ett skritt i retning r
	 */
	public static int dx(Direction r)
	{
		switch (r)
		{
		case SW:
		case W:
		case NW:
			return -1;
		case SE:
		case E:
		case NE:
			return 1;
		default:
			return 0;
		}
	}

	/**
	 * Konverterer retning til endring i y-posisjon
	 * 
	 * @param r
	 *            Retning
	 * @return Endring y-posisjon som tilsvarer ett skritt i retning r
	 */
	public static int dy(Direction r)
	{
		switch (r)
		{
		case SW:
		case S:
		case SE:
			return 1;
		case NW:
		case N:
		case NE:
			return -1;
		default:
			return 0;
		}
	}

	/**
	 * Konverterer tall fra numerisk tastatur til retning
	 * 
	 * @param i
	 *            Tall fra 1-9
	 * @return Retning som tilsvarer tallet
	 */
	public static Direction fromInt(int i)
	{
		switch (i)
		{
		case 1:
			return Direction.SW;
		case 2:
			return Direction.S;
		case 3:
			return Direction.SE;
		case 4:
			return Direction.W;
		case 5:
			return Direction.C;
		case 6:
			return Direction.E;
		case 7:
			return Direction.NW;
		case 8:
			return Direction.N;
		case 9:
			return Direction.NE;
		}
		return Direction.C;
	}
}